# 异常
# 异常三部分
# 1追踪信息
# 2异常类型
# 3异常内容

# 错误发生的条件是可以预知的
# 错误发生的条件不可以预知

# 格式
# try:
#     子代块 # 有可能抛出异常的代码
# except 异常类型1 as e:
#     pass
# except 异常类型2 as e:
#     pass
# ...
# else:
#     子代码块 # 如果检测的子代码块没有异常，则运行 else中的子代码块
# finally:
#     无论有无异常发生，都会执行finnaly的子代码块

print('start===')
try:
    print(1111)
    l = [1, 2]
    print(l[3])
    print(2222)
    print(3333)
# except IndexError as e:
#     print('异常信息：', e)
# except ValueError as e:
#     print('异常信息：', e)
except Exception as e: # 万能异常
    print('异常信息：', e)
else:
    print("没有异常")
finally: # 可以和try单独用 finally不处理异常
    print('回收系统资源')
print('end===')
